home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / probots.arc / BYEBYE.PR < prev    next >
Text File  |  1991-04-28  |  2KB  |  87 lines

  1. PROCEDURE byebye;
  2.  
  3.   VAR
  4.     direction,degrees,range,speed,counter,old_damage : integer;
  5.     center_distance,heading,corner_number,x,y,old_range : integer;
  6.  
  7. PROCEDURE corner(corner_number:integer);
  8.   begin                                          {move robots to 1 of the 4}
  9.       CASE corner_number OF                      {corners on the screen}
  10.        0:   begin
  11.               drive(degrees,speed);
  12.             end;
  13.        1:   begin
  14.                 REPEAT;
  15.                   drive(180,100);
  16.                 UNTIL loc_x<150;
  17.                 REPEAT;
  18.                   drive(90,100);
  19.                 UNTIL loc_y>850;
  20.                 drive(0,0);
  21.               end;
  22.        2:   begin
  23.                 REPEAT;
  24.                   drive(0,100);
  25.                 UNTIL loc_x>850;
  26.                 REPEAT;
  27.                   drive(90,100);
  28.                 UNTIL loc_y>850;
  29.                 drive(0,0);
  30.               end;
  31.        3:   begin
  32.                 REPEAT;
  33.                   drive(180,100);
  34.                 UNTIL loc_x<150;
  35.                 REPEAT;
  36.                   drive(270,100);
  37.                 UNTIL loc_y<150;
  38.                 drive(0,0);
  39.               end;
  40.        4:   begin
  41.                 REPEAT;
  42.                   drive(0,100);
  43.                 UNTIL loc_x>850;
  44.                 REPEAT;
  45.                   drive(270,100);
  46.                 UNTIL loc_y<150;
  47.                 drive(0,0);
  48.               end;
  49.       end;
  50.   end;
  51.  
  52.  
  53. PROCEDURE photons(VAR direction,range,counter:integer);
  54.   begin
  55.     degrees:=0;
  56.     REPEAT                              {until 1 complete revolution}
  57.     range:=scan(degrees,5);
  58.     IF (range<>0) THEN                  {anything there}
  59.       begin
  60.         REPEAT
  61.           cannon(degrees,range);
  62.           range:=scan(degrees,5);
  63.         UNTIL range=0;
  64.         degrees:=degrees-40;
  65.       end                           {shoot'em till he ain't there}
  66.     ELSE degrees:=(degrees+10) MOD 360; {increment scan direction}
  67.     UNTIL damage>old_damage;
  68.   end;
  69.  
  70.   BEGIN {Main joe}
  71.     speed := 0;
  72.     degrees := 0;
  73.     direction := 0;
  74.     corner_number:=4;
  75.     counter:=0;
  76.     drive(degrees,speed);
  77.     REPEAT
  78.       corner_number:=(corner_number+1) MOD 4;
  79.       old_damage:=damage;
  80.       REPEAT;
  81.         photons(direction,range,counter);
  82.       UNTIL damage>old_damage;
  83.       corner(corner_number);
  84.     UNTIL DEAD or WINNER;
  85.   END; {Main}
  86.  
  87.